﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 02/04/2014
 * Time: 01:28 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;
using Gestión_UTN.bo;

namespace Gestión_UTN.blimpl
{
	/// <summary>
	/// Description of profesorblimpl.
	/// </summary>
	public class profesorblimpl:Gestión_UTN.bl.profesorbl
	{
		private static Gestión_UTN.da.profesorda createProfesor = Gestión_UTN.factories.dafactory.createProfesor();
		private static Gestión_UTN.da.ciudadda createCiudad = Gestión_UTN.factories.dafactory.createCiudad();
		
		public profesorblimpl()
		{
		}
		
		public bool SaveProfesor(Gestión_UTN.bo.Profesorbo p)
		{
			bool ingresado = false;
			
			try 
			{
				Gestión_UTN.Entities.Ciudad ciudad = (null != p)
					? createCiudad.FindCiudadByNombre(p.Ciudad) : null;
				
				ingresado = (null != ciudad) 
					? createProfesor.SaveProfesor(p.Dni,p.Nombre,p.Apellido,p.FechaNac,p.Direccion,ciudad.CodPostal)
					: false;
			} 
			catch (Exception) 
			{
				ingresado = false;
			}
			
			return ingresado;
		}
		
		public bool DeleteProfesor(int dni)
		{
			bool eliminado = false;
			
			try 
			{
				eliminado = (0 != dni) ? createProfesor.DeleteProfesor(dni) : false;
			} 
			catch (Exception) 
			{
				eliminado = false;
			}
			
			return false;
		}
		
		public bool ModifyProfesor(int dni_anterior, Gestión_UTN.bo.Profesorbo p)
		{
			bool modificado = false;
			
			try 
			{
				Gestión_UTN.Entities.Ciudad ciu = ( null != p) 
					? createCiudad.FindCiudadByNombre(p.Ciudad) : null;
				
				modificado = (0 != dni_anterior && null != ciu)
					? createProfesor.ModifyProfesor(dni_anterior,p.Dni,p.Nombre,p.Apellido,
					                                p.FechaNac,p.Direccion,ciu.CodPostal)
					: false;
			}
			catch (Exception) 
			{
				modificado = false;
			}
			
			return modificado;
		}
		
		public System.Data.DataTable FindAllProfesores()
		{
			DataTable tablaProfesores= null;
			
			try 
			{
				tablaProfesores = createProfesor.FindAllProfesores();
			} 
			catch (Exception) 
			{
				tablaProfesores = null;
			}
			
			return tablaProfesores;
		}
		
		public Gestión_UTN.bo.Profesorbo FindProfesorByDNI(int dni)
		{
			Profesorbo profesor = null;
			
			try 
			{
				Gestión_UTN.Entities.Profesor pro = ( 0 != dni)
					? createProfesor.FindProfesorByDNI(dni) : null;
				
				Gestión_UTN.Entities.Ciudad ciu = (null != pro)
					? createCiudad.FindCiudadByCodPostal(pro.Ciu_codPostal)
					: null;
				
				profesor = (null != ciu)
					? new Profesorbo(pro.Dni,pro.Nombre,pro.Apellido,pro.FechaNac,
					                 pro.Direccion,ciu.Nombre)
					: null;
			} 
			catch (Exception) 
			{
				profesor = null;
			}
			
			return profesor;
		}
	}
}
